home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / p4 / p4-1_2b.lha / p4-1.2b / messages / temp.c < prev    next >
C/C++ Source or Header  |  1993-02-06  |  2KB  |  73 lines

  1. #include "p4.h"
  2.  
  3. extern    void    slave();
  4.  
  5. #define    MSG_BUFFER    0xfff
  6. #define    MSG_LEN_SENT    5
  7.  
  8. int    main(argc,argv)
  9. int argc;
  10. char **argv;
  11. {    p4_initenv(&argc,argv);
  12.      if (p4_get_my_id() == 0) 
  13.             p4_create_procgroup();
  14.  
  15.     slave();
  16.  
  17.     p4_wait_for_end();
  18. }
  19.  
  20. void    slave()
  21. {    int    msg_type, msg_len, msg_from;
  22.     char    *msg_ptr;
  23.     int    rec_type, rec_len, rec_from;
  24.     char    *rec_ptr;
  25.         int count = 0;
  26.     int     i, j;
  27.     
  28.     int    me = p4_get_my_id();
  29.     int    total = p4_num_total_slaves();
  30.     
  31.     for(j = 0; j<5000; j++)
  32.     {  if (me == 0)
  33.        {  msg_ptr = p4_msg_alloc(MSG_BUFFER);
  34.               if (msg_ptr  ==  NULL)
  35.               {
  36.                   printf("msg_alloc failed: exiting\n");
  37.                   exit(99);
  38.               }
  39.           msg_ptr[0] = 'a';
  40.           msg_ptr[1] = 'b';
  41.           msg_ptr[2] = 'c';
  42.           msg_ptr[3] = 'd';
  43.           msg_ptr[4] = '\0';
  44.  
  45.           /*****
  46.           printf("msg_ptr: %s\n", msg_ptr);
  47.           fflush(stdout);
  48.           *****/
  49.  
  50.           msg_len =  MSG_LEN_SENT;
  51.           msg_type = j;
  52.     
  53.           for(i=0; i<=total; i++)
  54.           {  if (i != me)  p4_sendb(msg_type, i, msg_ptr, msg_len);
  55.           }
  56.           p4_msg_free(msg_ptr);
  57.        }
  58.        else
  59.        {  rec_from = -1;
  60.           rec_type = -1;
  61.           rec_ptr = NULL;
  62.           p4_recv(&rec_type, &rec_from, &rec_ptr, &rec_len);
  63.           if (me == total  &&  (count++ % 200 == 0))
  64.           {  printf("%d received %d bytes from %d: %d  count = %d\n",
  65.                     me, rec_len, rec_from, rec_type, count);
  66.              fflush(stdout);
  67.           }
  68.           p4_msg_free(rec_ptr);
  69.        }
  70.     }       
  71.  
  72. }
  73.